home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
CD ROM Paradise Collection 4
/
CD ROM Paradise Collection 4 1995 Nov.iso
/
program
/
swagg_m.zip
/
HARDWARE.SWG
/
0028_Get CPU Type.pas
< prev
next >
Wrap
Pascal/Delphi Source File
|
1994-05-25
|
1KB
|
73 lines
{$D-} {$L-}
Program Cpuu;
Const
Cpu : Array[1..4] of String[5] = ('8086','80286','80386','80486');
Cpu8086 = 1;
Cpu80286 = 2;
Cpu80386 = 3;
Cpu80486 = 4;
Function GetCPU_Type: Byte; Assembler;
ASM
MOV DX, CPU8086
PUSH SP
POP AX
CMP SP,AX
JNE @OUT
MOV DX, CPU80286
PUSHF
POP AX
OR AX,4000h
PUSH AX
POPF
PUSHF
POP AX
TEST AX,4000H
JE @OUT
MOV DX,CPU80386
{"DB 66h" INDICATES '386 EXTENDED INSTRUCTION}
DB 66h
MOV BX,SP
DB 66h, 83h, 0E4h, 0FCh
DB 66h
PUSHF
DB 66h
POP AX
DB 66h
MOV CX,AX
DB 66h, 35h, 00h
DB 00h, 04h, 00
DB 66h
PUSH AX
DB 66h
POPF
DB 66h
PUSHF
DB 66h
POP AX
DB 66h,25h, 00h
DB 00h, 04h, 00h
DB 66h, 81h, 0E1h, 00h
DB 00h, 04h, 00h
DB 66h
CMP AX,CX
JE @NOT486
MOV DX, CPU80486
@NOT486:
DB 66h
PUSH CX
DB 66h
POPF
DB 66h
MOV SP,BX
@OUT:
MOV AX,DX
End;
Begin
Writeln; Writeln('I detected an ',Cpu[GetCpu_Type],' chip.');
End.